Page({
  /**
   * 页面的初始数据
   */
  data: {
    id: "",
    title: "",
    content: "",
    create_at: "",
    loading: false, // 默认不加载，因为已经有数据
    statusBarHeight: 20, // 默认状态栏高度
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    // 获取系统信息设置状态栏高度
    this.getStatusBarHeight();

    if (options.id) {
      this.setData({
        id: options.id,
        title: options.title ? decodeURIComponent(options.title) : "公告详情",
      });

      // 检查是否有传递的公告数据
      if (options.announcementData) {
        try {
          // 解析传递过来的公告数据
          const announcement = JSON.parse(
            decodeURIComponent(options.announcementData)
          );

          // 直接使用传递的数据更新页面
          this.setData({
            title: announcement.title || this.data.title,
            content: announcement.content || "",
            create_at: announcement.create_at || "",
            loading: false,
          });

          // 上报公告已读状态
          this.reportReadStatus(options.id);
        } catch (error) {
          console.error("解析公告数据失败:", error);
          // 如果解析失败，则调用API获取
          this.getAnnouncementDetail(options.id);
        }
      } else {
        // 如果没有传递公告数据，则调用API获取
        this.getAnnouncementDetail(options.id);
      }
    } else {
      wx.showToast({
        title: "参数错误",
        icon: "none",
      });
      setTimeout(() => {
        wx.navigateBack();
      }, 1500);
    }
  },

  /**
   * 获取状态栏高度
   */
  getStatusBarHeight: function () {
    const that = this;
    wx.getSystemInfo({
      success: function (res) {
        that.setData({
          statusBarHeight: res.statusBarHeight,
        });
      },
    });
  },

  /**
   * 获取公告详情
   */
  getAnnouncementDetail: function (id) {
    console.log("正在获取公告详情，ID:", id);

    // 获取用户信息
    const userInfo = wx.getStorageSync("userInfo");
    const userId = userInfo ? userInfo.userId : 1; // 使用实际用户ID，默认为1

    console.log("获取公告详情使用用户ID:", userId);

    // 显示加载状态
    this.setData({
      loading: true,
    });

    // 调用API获取公告详情
    wx.request({
      url: `https://smartsound.top/api/v1/user/announcement?user_id=${userId}&announcement_id=${id}`,
      method: "GET",
      success: (res) => {
        console.log("获取公告详情响应:", res.data);

        if (res.data && res.data.code === 0 && res.data.data) {
          const announcement = res.data.data.announcement;
          this.setData({
            title: announcement.title || this.data.title,
            content: announcement.content || "",
            create_at: announcement.create_at || "",
            loading: false,
          });

          // 上报公告已读状态
          this.reportReadStatus(id);
        } else {
          console.error("获取公告详情失败:", res.data);
          this.setData({
            loading: false,
          });
          wx.showToast({
            title: res.data.message || "获取公告详情失败",
            icon: "none",
          });
        }
      },
      fail: (error) => {
        console.error("请求公告详情接口失败:", error);
        this.setData({
          loading: false,
        });
        wx.showToast({
          title: "网络请求失败",
          icon: "none",
        });
      },
    });
  },

  /**
   * 上报公告已读状态
   */
  reportReadStatus: function (announcementId) {
    console.log("正在上报公告已读状态，ID:", announcementId);

    // 获取用户信息
    const userInfo = wx.getStorageSync("userInfo");
    const userId = userInfo ? userInfo.userId : 1; // 使用实际用户ID，默认为1

    console.log("上报公告已读状态使用用户ID:", userId);

    wx.request({
      url: "https://smartsound.top/api/v1/user/announcements/read",
      method: "POST",
      data: {
        user_id: userId,
        announcement_id: announcementId,
      },
      success: (res) => {
        console.log("上报公告已读状态响应:", res.data);

        if (res.data && res.data.code === 0) {
          console.log("公告已读状态上报成功");
        } else {
          console.error("公告已读状态上报失败:", res.data);
        }
      },
      fail: (error) => {
        console.error("上报已读状态接口请求失败:", error);
      },
    });
  },

  /**
   * 返回上一页
   */
  navigateBack: function () {
    wx.navigateBack();
  },
});
